package com.example.servicedemo;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

public class MyService extends Service {

    private static final String TAG =MyService.class.getSimpleName();

    /**
     * 创建服务时首次调用  当服务创建成功后   不会重复调用
     */
    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG,"创建服务");
    }

    /**
     * 开启服务时调用  并且每次开启服务时  均会调用该方法
     * @param intent 开启服务时传入的Intent对象
     * @param flags
     * @param startId
     * @return   START_STICKY  返回此标识时 即当服务资源不足被系统杀死后  当恢复资源时，服务则自动重启
     */
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG,"启动服务");
        return START_STICKY;

    }

    /**
     * 绑定服务时调用
     * @param intent 绑定服务时传递的Intent
     * @return  IBinder 返回到绑定回调的ServiceConnection.onServiceConnected()中的IBinder参数
     */
    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        Log.d(TAG,"绑定服务");
       return new MyBinder();
    }
    //用于绑定时返回
    class MyBinder extends Binder{
        public String getStr(){
            return "service";
        }
        public void next(){
            nextSong();
        }
    }
    public  void nextSong(){

    }


    @Override
    public void onDestroy() {
        Log.d(TAG,"销毁服务");
        super.onDestroy();

    }

    /**
     * 当解除绑定时调用
     * @param intent 是否解绑并可以重新绑定
     * @return
     */
    @Override
    public boolean onUnbind(Intent intent) {
        Log.d(TAG,"解除绑定");
        return true;
    }

    /**
     * 重新绑定时调用
     * @param intent
     */
    @Override
    public void onRebind(Intent intent) {
        Log.d(TAG,"重新绑定服务");
        super.onRebind(intent);
    }
}